package main

import (
	"context"
	"fmt"
	"log"
	"net"

	hell_grpc "gin_grpc/grpc/pb"
	"google.golang.org/grpc"
)

// 1. 服务结构体定义（正确）
type servicex struct {
	hell_grpc.UnimplementedHellOGRPCServer
	hell_grpc.UnimplementedSelectGRPCServer
	hell_grpc.UnimplementedDelGRPCServer
}

// 2. 方法实现（正确-使用指针接收器）
func (s *servicex) Search(ctx context.Context, req *hell_grpc.SearchRequest) (*hell_grpc.SearchResponse, error) {
	fmt.Println("Received page:", req.GetPageNumber()) //收到 grpc 发来的消息
	return &hell_grpc.SearchResponse{Id: "我是 c id"}, nil
}

func (s *servicex) Select(ctx context.Context, req *hell_grpc.SelectReq) (*hell_grpc.SelectResp, error) {
	fmt.Println("查询的用户:", req.GetReqName()) //收到 grpc 发来的消息
	return &hell_grpc.SelectResp{RespName: "我是 username"}, nil
}
func (s *servicex) Del(ctx context.Context, req *hell_grpc.DelReq) (*hell_grpc.DelResp, error) {
	fmt.Println("Received page:", req.GetReqUserId()) //收到 grpc 发来的消息
	return &hell_grpc.DelResp{RespData: "查询到用户id 是我"}, nil
}

func main() {
	// 3. 创建监听（正确）
	listen, err := net.Listen("tcp", ":8080")
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}

	// 4. 创建gRPC服务器（正确）
	s := grpc.NewServer()

	// 5. 注册服务（正确）
	hell_grpc.RegisterHellOGRPCServer(s, &servicex{})
	hell_grpc.RegisterSelectGRPCServer(s, &servicex{})
	hell_grpc.RegisterDelGRPCServer(s, &servicex{})

	log.Println("Server started on :8080")
	if err := s.Serve(listen); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}
